package cn.iocoder.yudao.module.pplan.service.quarterproducerecord;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.pplan.controller.admin.quarterproducerecord.vo.QuarterProduceRecordPageReqVO;
import cn.iocoder.yudao.module.pplan.controller.admin.quarterproducerecord.vo.QuarterProduceRecordSaveReqVO;
import cn.iocoder.yudao.module.pplan.controller.admin.quarterproducerecord.vo.QuarterProduceRecordUpdateStatusReqVO;
import cn.iocoder.yudao.module.pplan.dal.dataobject.quarterproducerecord.QuarterProduceRecordDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 生产计划-生产季度计划记录 Service 接口
 *
 * @author yisl
 */
public interface QuarterProduceRecordService {

    /**
     * 创建生产计划-生产季度计划记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createQuarterProduceRecord(@Valid QuarterProduceRecordSaveReqVO createReqVO);

    /**
     * 更新生产计划-生产季度计划记录
     *
     * @param updateReqVO 更新信息
     */
    void updateQuarterProduceRecord(@Valid QuarterProduceRecordSaveReqVO updateReqVO);

    /**
     * 更新生产计划-生产季度计划状态
     *
     * @param updateReqVO 更新信息
     */
    void updateQuarterProduceStatus(@Valid QuarterProduceRecordUpdateStatusReqVO updateReqVO);

    /**
     * 删除生产计划-生产季度计划记录
     *
     * @param id 编号
     */
    void deleteQuarterProduceRecord(Long id);

    /**
    * 批量删除生产计划-生产季度计划记录
    *
    * @param ids 编号
    */
    void deleteQuarterProduceRecordListByIds(List<Long> ids);

    /**
     * 获得生产计划-生产季度计划记录
     *
     * @param id 编号
     * @return 生产计划-生产季度计划记录
     */
    QuarterProduceRecordDO getQuarterProduceRecord(Long id);

    /**
     * 获得生产计划-生产季度计划记录分页
     *
     * @param pageReqVO 分页查询
     * @return 生产计划-生产季度计划记录分页
     */
    PageResult<QuarterProduceRecordDO> getQuarterProduceRecordPage(QuarterProduceRecordPageReqVO pageReqVO);

}